package 策略模式;

/**
 * 策略模式的重点就是封装角色，它是借用了代理模式的思路，大家可以想想，
 * 它和代理 模式有什么差别，差别就是策略模式的封装角色和被封装的策略类不用是同一个接口，如果 是同一个接口那就成为了代理模式
 *
 * 它就是采用了面向对象的继承和多态机制
 */
public class Client {
    // 高层模块的调用非常简单，知道要用哪个策略，产生出它的对象，然后放到封装角色中 就完成任务了，
    public static void main(String[] args) {
        //声明一个具体的策略
        IStrategy strategy = new ConcreteStrategy1();
        // 声明上下文对象
        Context context = new Context(strategy);
        // 执行封装后的方法
        context.doAnythinig();
    }
}
